// Key Driver
// (c) jimon game studio

#ifndef JEH_IKEYDRIVER
#define JEH_IKEYDRIVER

#include "jeUnknown.h"
#include "jeStl.h"
#include "jeKeyCodes.h"

namespace je
{
	namespace input
	{
		//! Key Driver
		class IKeyDriver:public je::jeUnknown
		{
		public:
			//! Destructor
			virtual ~IKeyDriver()
			{
			}

			//! Return true if hit
			virtual u1 IsHit(KeyCode Key) = 0;

			//! Return true if down
			virtual u1 IsDown(KeyCode Key,u1 TrueWhenDownMessageArrive = false) = 0;

			//! Flush Keys Hits
			virtual void FlushKeysHits() = 0;

			//! Get Keys Stream, last element of stream is KC_NULL
			virtual KeyCode * GetKeysStream() = 0;

			//! Get Text Stream
			virtual jeStringd GetTextStream() = 0;

			//! Flush Keys Stream
			virtual void FlushKeysStream() = 0;
		};
	}
}

#endif
